<!DOCTYPE html>
<body>
<script src="../../../resources/js-test.js"></script>
<div id="parent1">text</div>
<div id="parent2">text</div>
<script>
function handleInsertion() {
    document.removeEventListener('DOMNodeInserted', handleInsertion);
    parent.innerHTML = '';
}
document.addEventListener('DOMNodeInserted', handleInsertion);
var parent = document.getElementById('parent1');
var r = new Range();
window.getSelection().addRange(r);
r.setStart(parent, 0);
r.setEnd(parent, 0);
r.insertNode(document.createElement('span'));
parent.remove();

function handleInsertion2() {
    if (parent.childNodes.length != 3)
        return;
    var textNodeCreatedBySplitText = parent.lastChild;
    parent.removeChild(textNodeCreatedBySplitText);
    document.removeEventListener('DOMNodeInserted', handleInsertion2);
}
document.addEventListener('DOMNodeInserted', handleInsertion2);
parent = document.getElementById('parent2');
r.setStart(parent2.firstChild, 2);
r.setEnd(parent2.firstChild, 2);
r.insertNode(document.createElement('span'));

description('No assertion failures even if a DOM mutation event handler updates nodes in a Range during Range::insertNode.');
testPassed('if this did not crash.');
parent.remove();
</script>
</body>
